
import Vue from 'vue'
import App from './App.vue'
import store from './store'
import router from './router'
import bootstrap from '~/core/bootstrap'
import { registerComponent } from "~/extension/global-register"

async function startUp() {
  // 启动主体业务逻辑
  await bootstrap({ store, router })

  // 生成提示信息
  Vue.config.productionTip = false
  Vue.prototype.resetSetItem = function (key, newVal) {
    if (key === 'watchStorage') {
        // 创建一个StorageEvent事件
        const newStorageEvent = document.createEvent('StorageEvent');
        const storage = {
            setItem(k, val) {
                sessionStorage.setItem(k, val);

                // 初始化创建的事件
                (newStorageEvent as any).initStorageEvent('setItem', false, false, k, null, val);

                // 派发对象
                window.dispatchEvent(newStorageEvent)
            }
        }
        return storage.setItem(key, newVal);
    }
  }
  // 全局混入store
  Vue.mixin({
    store
  })

  registerComponent(Vue)

  new Vue({
    router,
    store,
    render: h => h(App)
  }).$mount("#app")
}

// 打印版本发布信息
if (process.env.BUILD_TIME) {
  console.log('当前环境:' + process.env.BUILD_ENV)
  console.log('版本发布时间:' + process.env.BUILD_TIME)
}

// 应用程序启动
startUp()


